package com.physics.mps.module.task.sub;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.physics.mps.entity.dto.StatusCount;
import com.physics.mps.entity.dto.SubTaskEntity;
import com.physics.mps.entity.vo.SubTaskQueryVo;
import com.physics.mps.entity.vo.SubTaskVo;

import java.util.List;
import java.util.Map;

/**
 * @author mcsoft
 * @date 2023/9/15 10:02
 * @description 子任务接口定义
 */
public interface SubTaskService extends IService<SubTaskEntity> {


    /**
     * 分页查询任务列表
     * task733、734
     *
     * @param current 当前页
     * @param size    每页大小
     * @param vo      查询参数：用户ID，主任务ID ...
     * @return
     */
    Page<SubTaskEntity> selectTask(int current, int size, SubTaskQueryVo vo);

    Page<SubTaskEntity> selectFastCAETask(int current, int size, SubTaskQueryVo vo);
    /**
     * 删除子任务
     * task736
     *
     * @param id 子任务ID
     */
    void deleteSubTask(String id);


    /**
     * 获取子任务文件导出url
     * task735
     *
     * @param id 子任务ID
     * @return minio url
     */
    String subTaskFileUrl(String id);


    /**
     * 获取子任务
     * task739
     *
     * @param id 子任务ID
     * @return
     */
    SubTaskEntity getSubTask(String id);


    /**
     * 新增子任务
     *
     * @param appId
     * @param moduleId
     * @param taskName
     * @param filePath
     * @return
     */
    String addSubTask(String appId, String moduleId, String taskId, String taskName, String filePath);


    /**
     * 更新子任务
     *
     * @param subTaskId
     * @param logFilePath
     * @param resultFilePath
     * @param resultImgPath
     * @param picUrl
     * @param jsonUrl
     */
    void updateTask(String subTaskId, String logFilePath, String resultFilePath, String resultImgPath, String url, String picUrl, String jsonUrl);


    /**
     * 统计仿真情况
     *
     * @return
     */
    List<StatusCount> getNumber();

    /**
     * 统计FastCAE仿真情况
     *
     * @return
     */
    List<StatusCount> getFastCAENumber();

    /**
     * 统计当前节点任务情况
     *
     * @return
     */
    Map<String, Object> getThreadPoolStatus();

    /**
     * 添加subTask
     * @param subTaskVo
     * @return
     */
    String increase(SubTaskVo subTaskVo);
}
